package com.plian.system.service.im;

import com.plian.system.entity.im.ProjectInfo;
import com.plian.system.excel.ImportResult;
import com.plian.system.model.R;
import com.plian.system.mybatis.base.BaseService;
import com.plian.system.vo.im.ProjectInfoVO;

import javax.servlet.http.HttpServletResponse;
import java.io.InputStream;
import java.io.OutputStream;
import java.util.List;
import java.util.Map;
import java.util.concurrent.Future;

/**
 * 服务类
 *
 * @author
 * @since 2019-09-27
 */
public interface IProjectInfoService extends BaseService<ProjectInfo> {

    /**
     * 项目信息导入
     * @param progressId
     * @param inputStream
     * @return
     */
    Future<ImportResult> importExcel(String progressId, InputStream inputStream);

    /**
     * @Description: //TODO 接收数字宁波-项目信息
     * @Author: Take-off
     * @Date: 9:41 AM 2023/2/28
     * @Param: [data]
     * @return: java.lang.String
     **/
    String saveProjectInfos(String data);

    /**
     * 项目名称校验
     * @param projectInfo
     * @return
     */
    String checkName(ProjectInfo projectInfo);

    /**
     * 导入模板下载
     * @param response
     * @param os
     */
    void exportTemplateExcel(HttpServletResponse response, OutputStream os);

    /**
     * 增加项目投资计划执行的项目其他字段到列表中
     * @param projectInfoVOList,year
     */
    void addOtherFiledForPlanExecution(List<ProjectInfoVO> projectInfoVOList,String fillingMonth);

    /**
     * 增加项目投资计划的项目其他字段到列表中
     * @param projectInfoVOList
     * @param fillingMonth
     */
    void addOtherFiledForBasePlan(List<ProjectInfoVO> projectInfoVOList,String fillingMonth);

    Map<String, Long> getSourceId();

    R submit(ProjectInfo projectInfo);

    ProjectInfoVO getDetailVO(Object id);
    /**
     *  生成excel文件 并返回文件名  时间戳+"-"+uuid
     * @param
     * @return
     */
    String export(String lastYear,String superviseFlag);
    /**
     * excel文件下载
     *
     * @param key
     * @param response
     */
    void download(String key, HttpServletResponse response);
}
